package version2;

import java.util.ArrayList;
import java.util.List;

/**
 * Description:
 *
 * @author JourWon
 * @date 2021/4/10 9:50
 */
class Dateof {

    /**
     * 对数据单元格进行处理
     *
     * 使用对象处理数据，防止数据泄露
     *
     * @n =0 用来读取每一行数据，防止错位（1=n++.课程名 2=n++.开课周次/上课节次 3=n++.授课老师 4=“舍去”.授课班级 5=n++.授课地点）
     * @m =1 用来处理开课周次不连续的情况，如“2；4；6；8···周[1,2]”
     * @data 返回数据，用于传值
     * @sumarys 接受来自cell单元格的数据
     */
    private int n ,m;
    private List<String> data;
    private List<String> sumarys;
    public Dateof(List<String> sumarys){
        this.m = 1;
        this.n = 0;
        this.data = new ArrayList<>();
        this.sumarys = sumarys;
    }
    public  List<String> summary(){
        while (n<sumarys.size()&&!(sumarys.size()<5)){      //判断是否还有课程在这个时间段

            data.add(sumarys.get(n++));       //第一个数据为课程名

            String ORIF = sumarys.get(n++);   //判断周数
            int lfte = ORIF.indexOf("周[");
            int len = ORIF.length();

            data.add(ORIF.substring(0,lfte));  //提取周次{“1-17”，“2-16 双”，“3-17 单” “2；4；6；8”}
            data.add(ORIF.substring(lfte+2,len-1));     //提取上课节次“[3,4]”

            String Teacher = sumarys.get(n);       //授课老师
            String Classroom = sumarys.get(n+=2);   //授课教室

            //教室+老师组成“10B105 王老师”的形式插入LOCATION
            data.add(Classroom.substring(0,Classroom.indexOf("["))+" "+ Teacher.substring(1,Teacher.indexOf("]")));

            n+=2;   //排除分割线“------------------------”，判断外部循环是否继续
            while (data.get(1).indexOf(";") != -1){     //区分以“；”为分隔符的周次
                data.add(m+3,data.get(0));
                data.add(m+4,data.get(1).substring(0,data.get(1).indexOf(";")));
                data.set(1,data.get(1).substring(data.get(1).indexOf(";")+1));
                data.add(m+5,data.get(2));
                data.add(m+6,data.get(3));
                m+=4;
            }
        }
        return data;
    }
}
